package com.yamaikeji.system.domain.plan;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yamaikeji.common.core.domain.BaseEntity;

import java.time.LocalDate;
import java.util.List;

/**
 * 计划对象 p_plan
 * 
 * @author yamaikeji
 * @date 2023-10-03
 */
public class Plan extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** 计划编号 */
    private String planNo;

    /** 用户编号 */
    private String userNo;

    /** 计划名称 */
    private String planName;

    /** 计划类型 */
    private String planTypeNo;

    /** 计划时间类型(1单天 2多天 3阶段 4周期) */
    private String planTimeType;

    /** 计划时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate planTime;

    /** 多日时间 */
    private String planMoreTime;

    /** 计划开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate planBeginTime;

    /** 计划结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate planEndTime;

    /** 计划周期 */
    private Long planPeriod;

    /** 周期类型(1每天 2每周 3每月 4每年) */
    private String planPeriodType;

    /** 周期时间 */
    private String planPeriodTime;

    /** 周期等级 */
    private String planLevel;

    /** 计划备注 */
    private String planRemark;

    /** 提醒开关（0开启 1关闭） */
    private String tipSwitch;

    /** 提醒类型(0每天 1每周 2每月) */
    private String tipType;

    /** 提醒时间 */
    private String tipTime;

    /** 提醒提前时间(分钟) */
    private Long tipBeforeTime;

    /** 计划状态(0未开始 1进行中 2未完成 3已完成 4已结束) */
    private String planStatus;

    /** 已用时长 单位秒 */
    private Long useTime;

    /** 删除标志（0存在 2删除） */
    private String delFlag;

    // 拓展字段
    /** 当前时间 */
    private LocalDate nowTime;

    /** 7天后时间*/
    private LocalDate sevenTime;

    /** 计划进度 */
    private Double planPeriodRate;

    /** 计划数*/
    private Integer planNum;

    /** 计划类型名称 */
    private String planTypeName;

    /** 图标类型 1icon 2symbol 3图片 */
    private String imageType;

    /** 图标 */
    private String image;

    /** 颜色 */
    private String color;

    /** 子任务 */
    private List<PlanTask> planTaskList;

    /** 单日计划数*/
    private Integer onePlanNum;

    /** 今日计划数*/
    private Integer dayPlanNum;

    /** 多日计划数*/
    private Integer morePlanNum;

    /** 阶段计划数*/
    private Integer rangePlanNum;

    /** 周期计划数*/
    private Integer priedPlanNum;

    /** 总计划数*/
    private Integer totalPlanNum;

    /** 默认计划分类 */
    private String defaultPlanTypeNo;

    /** 任务总数  */
    private Integer totalTaskNum;

    /** 已完成任务数 */
    private Integer completeTaskNum;

    /** 未完成任务数 */
    private Integer notCompleteTaskNum;

    /** 子任务总数  */
    private Integer totalPlanTaskNum;

    /** 已完成子任务数 */
    private Integer completePlanTaskNum;

    /** 未完成子任务数 */
    private Integer notCompletePlanTaskNum;

    /** 任务 */
    private List<Task> taskList;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getPlanNo() {
        return planNo;
    }

    public void setPlanNo(String planNo) {
        this.planNo = planNo;
    }

    public String getUserNo() {
        return userNo;
    }

    public void setUserNo(String userNo) {
        this.userNo = userNo;
    }

    public String getPlanName() {
        return planName;
    }

    public void setPlanName(String planName) {
        this.planName = planName;
    }

    public String getPlanTypeNo() {
        return planTypeNo;
    }

    public void setPlanTypeNo(String planTypeNo) {
        this.planTypeNo = planTypeNo;
    }

    public String getPlanTimeType() {
        return planTimeType;
    }

    public void setPlanTimeType(String planTimeType) {
        this.planTimeType = planTimeType;
    }

    public LocalDate getPlanTime() {
        return planTime;
    }

    public void setPlanTime(LocalDate planTime) {
        this.planTime = planTime;
    }

    public String getPlanMoreTime() {
        return planMoreTime;
    }

    public void setPlanMoreTime(String planMoreTime) {
        this.planMoreTime = planMoreTime;
    }

    public LocalDate getPlanBeginTime() {
        return planBeginTime;
    }

    public void setPlanBeginTime(LocalDate planBeginTime) {
        this.planBeginTime = planBeginTime;
    }

    public LocalDate getPlanEndTime() {
        return planEndTime;
    }

    public void setPlanEndTime(LocalDate planEndTime) {
        this.planEndTime = planEndTime;
    }

    public Long getPlanPeriod() {
        return planPeriod;
    }

    public void setPlanPeriod(Long planPeriod) {
        this.planPeriod = planPeriod;
    }

    public String getPlanPeriodType() {
        return planPeriodType;
    }

    public void setPlanPeriodType(String planPeriodType) {
        this.planPeriodType = planPeriodType;
    }

    public String getPlanPeriodTime() {
        return planPeriodTime;
    }

    public void setPlanPeriodTime(String planPeriodTime) {
        this.planPeriodTime = planPeriodTime;
    }

    public String getPlanLevel() {
        return planLevel;
    }

    public void setPlanLevel(String planLevel) {
        this.planLevel = planLevel;
    }

    public String getPlanRemark() {
        return planRemark;
    }

    public void setPlanRemark(String planRemark) {
        this.planRemark = planRemark;
    }

    public String getTipSwitch() {
        return tipSwitch;
    }

    public void setTipSwitch(String tipSwitch) {
        this.tipSwitch = tipSwitch;
    }

    public String getTipType() {
        return tipType;
    }

    public void setTipType(String tipType) {
        this.tipType = tipType;
    }

    public String getTipTime() {
        return tipTime;
    }

    public void setTipTime(String tipTime) {
        this.tipTime = tipTime;
    }

    public Long getTipBeforeTime() {
        return tipBeforeTime;
    }

    public void setTipBeforeTime(Long tipBeforeTime) {
        this.tipBeforeTime = tipBeforeTime;
    }

    public String getPlanStatus() {
        return planStatus;
    }

    public void setPlanStatus(String planStatus) {
        this.planStatus = planStatus;
    }

    public Long getUseTime() {
        return useTime;
    }

    public void setUseTime(Long useTime) {
        this.useTime = useTime;
    }

    public String getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public LocalDate getNowTime() {
        return nowTime;
    }

    public void setNowTime(LocalDate nowTime) {
        this.nowTime = nowTime;
    }

    public LocalDate getSevenTime() {
        return sevenTime;
    }

    public void setSevenTime(LocalDate sevenTime) {
        this.sevenTime = sevenTime;
    }

    public Double getPlanPeriodRate() {
        return planPeriodRate;
    }

    public void setPlanPeriodRate(Double planPeriodRate) {
        this.planPeriodRate = planPeriodRate;
    }

    public Integer getPlanNum() {
        return planNum;
    }

    public void setPlanNum(Integer planNum) {
        this.planNum = planNum;
    }

    public String getPlanTypeName() {
        return planTypeName;
    }

    public void setPlanTypeName(String planTypeName) {
        this.planTypeName = planTypeName;
    }

    public String getImageType() {
        return imageType;
    }

    public void setImageType(String imageType) {
        this.imageType = imageType;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public List<PlanTask> getPlanTaskList() {
        return planTaskList;
    }

    public void setPlanTaskList(List<PlanTask> planTaskList) {
        this.planTaskList = planTaskList;
    }

    public Integer getDayPlanNum() {
        return dayPlanNum;
    }

    public void setDayPlanNum(Integer dayPlanNum) {
        this.dayPlanNum = dayPlanNum;
    }

    public Integer getOnePlanNum() {
        return onePlanNum;
    }

    public void setOnePlanNum(Integer onePlanNum) {
        this.onePlanNum = onePlanNum;
    }

    public Integer getMorePlanNum() {
        return morePlanNum;
    }

    public void setMorePlanNum(Integer morePlanNum) {
        this.morePlanNum = morePlanNum;
    }

    public Integer getRangePlanNum() {
        return rangePlanNum;
    }

    public void setRangePlanNum(Integer rangePlanNum) {
        this.rangePlanNum = rangePlanNum;
    }

    public Integer getPriedPlanNum() {
        return priedPlanNum;
    }

    public void setPriedPlanNum(Integer priedPlanNum) {
        this.priedPlanNum = priedPlanNum;
    }

    public Integer getTotalPlanNum() {
        return totalPlanNum;
    }

    public void setTotalPlanNum(Integer totalPlanNum) {
        this.totalPlanNum = totalPlanNum;
    }

    public String getDefaultPlanTypeNo() {
        return defaultPlanTypeNo;
    }

    public void setDefaultPlanTypeNo(String defaultPlanTypeNo) {
        this.defaultPlanTypeNo = defaultPlanTypeNo;
    }

    public Integer getTotalTaskNum() {
        return totalTaskNum;
    }

    public void setTotalTaskNum(Integer totalTaskNum) {
        this.totalTaskNum = totalTaskNum;
    }

    public Integer getCompleteTaskNum() {
        return completeTaskNum;
    }

    public void setCompleteTaskNum(Integer completeTaskNum) {
        this.completeTaskNum = completeTaskNum;
    }

    public Integer getNotCompleteTaskNum() {
        return notCompleteTaskNum;
    }

    public void setNotCompleteTaskNum(Integer notCompleteTaskNum) {
        this.notCompleteTaskNum = notCompleteTaskNum;
    }

    public Integer getTotalPlanTaskNum() {
        return totalPlanTaskNum;
    }

    public void setTotalPlanTaskNum(Integer totalPlanTaskNum) {
        this.totalPlanTaskNum = totalPlanTaskNum;
    }

    public Integer getCompletePlanTaskNum() {
        return completePlanTaskNum;
    }

    public void setCompletePlanTaskNum(Integer completePlanTaskNum) {
        this.completePlanTaskNum = completePlanTaskNum;
    }

    public Integer getNotCompletePlanTaskNum() {
        return notCompletePlanTaskNum;
    }

    public void setNotCompletePlanTaskNum(Integer notCompletePlanTaskNum) {
        this.notCompletePlanTaskNum = notCompletePlanTaskNum;
    }

    public List<Task> getTaskList() {
        return taskList;
    }

    public void setTaskList(List<Task> taskList) {
        this.taskList = taskList;
    }
}
